package regexp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created with IntelliJ IDEA
 * Description:正则字符匹配
 * User:22954
 * Date:2024-05-27
 * Time:14:43
 */
public class Rule1 {
    /*
    abc----直接匹配abc字符串
    [xyz...]----[]内的任意一个字符
    \\d----任意一个数字字符
    \\w----任意一个英文/数字/下划线字符
    \\s----任意一个空白字符
    \\D | \\W | \\S ----小写的取反情况
    (?!)----取消后置字符(串)的区分大小写限定    可用()限定范围
        Pattern.compile(regex,Pattern.CASE_INSENSITIVE)取消regex中所有的大小写限定
    .----除\n外的任意一个字符
    \\----转义符   Java中的转义符是两个\,C C++中是一个\
     */
    public static void main(String[] args) {
        String content = "123.abc@ _/*a\nadyABC2s/你好";
        String regex = "";
        regex = "[a-z]";//匹配 a-z之间的任意一个字符
        regex = "[A-Z]";//匹配 A-Z之间的任意一个字符
        regex = "[^a-z]";//匹配 除a-z的任意一个字符   ^是取反的意思,只能用在[]内
        regex = "abc";//匹配 abc字符串,默认区分大小写
        regex = "(?i)abc";//匹配 abc字符串,不区分大小写    (?i)表示后面的模式都不区分大小写
        regex = "[0-9]";//匹配 0-9之间的任意一个字符
        regex = "[abcd]";//匹配 abcd中的任意一个字符
        regex = "[^abcd]";//匹配 除abcd的任意一个字符
        regex = "\\d";//匹配 0-9之间的任意一个字符 相当于[0-9]
        regex = "\\D";//匹配 除0-9的任意一个字符  相当于[^0-9]
        regex = "\\w";//匹配 任意一个英文/数字/下划线字符 相当于[a-zA-Z0-9_]
        regex = "\\W";//匹配 除英文/数字/下划线的任意字符 相当于[^a-zA-Z0-0_]
        regex = "\\s";//匹配 任意一个空白字符(空格/制表符...)
        regex = "\\S";//匹配 任意一个非空白字符
        regex = ".";//匹配 除\n之外的任意一个字符
        regex = "\\.";//匹配 .    Java的转义符是\\

        Pattern pattern = Pattern.compile(regex);
//        pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);//修改默认,不区分大小写
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()){
            System.out.println(matcher.group(0));
        }
    }
}
